package com.zeus.controller;

import com.github.pagehelper.PageInfo;
import com.zeus.JsonWebToken.JWTUtil;
import com.zeus.pojo.FeedBack;
import com.zeus.service.FeedBackService;
import com.zeus.util.JsonObject;
import com.zeus.util.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

/**
 * @author 冯扬龙
 * @date 2021/6/10 12:31
 */
@Controller
@RequestMapping("/feedback")
public class FeedBackController {

    @Autowired
    private FeedBackService feedBackService;

    /**
     * 后台：
     查询功能,高级查询+数据渲染在后端页面上，高级查询走的是mapper层的这个方法，渲染数据走的是service层的方法
     */
    @RequestMapping("/queryPointAndAllFeedBack")
    @ResponseBody
   public JsonObject queryPointAndAllFeedBack(@RequestParam(defaultValue = "1") int page,
                                @RequestParam(defaultValue = "15") int pageSize,
                                String title) {
       PageInfo<FeedBack> pageInfo = feedBackService.queryPointAndAllFeedBack(page, pageSize, title);
       JsonObject object = new JsonObject(0, "ok", pageInfo.getTotal(), pageInfo.getList());
       return object;
  }

    /**
     * 后台：
     删除功能，支持批量删除，前端传过来的是id字符串集合，假如是只删除一个的话就是一个字符串，假如同时选中多个的话就是批量删除
     所以支持单一删除和批量删除
     */
    @RequestMapping("/deleteFeedById")
    @ResponseBody
    public R deleteFeedById(String ids) {
//       把接收到的字符串转集合对象
        List<String> list = Arrays.asList(ids.split(","));
        for(String id : list){
           feedBackService.deleteFeedById(Integer.parseInt(id));
        }
        return R.ok();
    }

    /**
     前端：
     页面尾巴部分有反馈可以提交，输入反馈的内容可以在后台显示,前台传过来的是内容可以SpringMVC数据绑定
     */
    @RequestMapping("/addFeedBack")
    @ResponseBody
    public R addFeedBack(@RequestBody FeedBack feedBack, HttpServletRequest request){
//        拿到前端传过来的参数以后设置一下提交反馈的时间，保证时间是最新的
        feedBack.setCtime(new Date());
//        再设置一下用户名，可以动态接收
        String token = request.getHeader("token");
        String username = JWTUtil.getUserName(token);
        feedBack.setUname(username);
        int i = feedBackService.addFeedBack(feedBack);
        if(i > 0){
            return R.ok();
        }else {
            return R.fail("你好，暂时不能提交反馈");
        }
    }
}
